package com.gxa.mapper;

import com.gxa.entity.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * mybatis知识点：
 *     1. 传递参数方式有几种
 *        Integer addEmp(Emp emp);
 *            <insert id="addEmp" parameterType="com.gxa.entity.Emp">
 *               insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
 *               values(#{empno},#{ename},#{job},#{hiredate},#{sal},#{comm},#{deptno})
 *            </insert>
 *        Integer addEmp(Map map);
 *            <insert id="addEmp" parameterType="java.util.Map">
 *               insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
 *               values(#{empno},#{ename},#{job},#{hiredate},#{sal},#{comm},#{deptno})
 *            </insert>
 *        Integer addEmp(Integer empno,String ename.......);
             <insert id="addEmp">
                insert into emp(empno,ename,job)
                values(#{arg0},#{arg1},#{arg2})
             </insert>
             <insert id="addEmp">
                 insert into emp(empno,ename,job)
                 values(#{param1},#{param2},#{param3})
             </insert>
 *        Integer addEmp(@Param("empno") Integer empno, @Param("ename") String ename, @Param("job") String job);
 *           <insert id="addEmp">
 *               insert into emp(empno,ename,job)
 *               values(#{empno},#{ename},#{job})
 *          </insert>
 *        Integer addEmp(@Param("ids") List<Integer> ids);
 *          <insert id="addEmp">
 *                <foreach item="id" collection="ids" open="(" separator="," close=")">
 *                     #{id}
 *                </foreach>
 *          </insert>
 *
 *    2. 返回结果的几种方式
 *        增、删、改 都是统一返回受影响的行数 = int类型
 *        查询就会有多种情况：int、对象 = 关注返回结果集映射问题
 *            映射关系：一对一、一对多、多对一、多对多(中间表)
 *            resultType="" resultMap=""
 *
 *    3. 动态SQL -- 精髓
 *       if where when then set foreach
 *
 *    4. 缓存，一级缓存、二级缓存
 */

public interface EmpMapper {
    Integer addEmp(Emp emp);
    Integer update(Emp emp);
    Integer delete(int id);
    Emp select(int id);
}
